const mongoose = require('mongoose');

// 建立链接
mongoose.connect('mongodb://127.0.0.1:27017/class0202');

mongoose.connection.on('open' , ()=>{
    console.log('数据库链接成功');
    // 创建数据骨架
    /**
     * type:类型 ，首字母大写
     * unique: 是否唯一，如果为true，那么该字段不能重复
     * default: 默认值
     */
    const userSchema = new mongoose.Schema({
        username:{
            type:String,
            unique:false
        },
        password:String,
        age:{
            type:Number,
            default:18
        }
    })
    const userModel = mongoose.model('user', userSchema, 'user');
    // 创建
    // userModel.create({username:'zyx', password:'123123'}).then(data=>{
    //     console.log('create data: ', data);
    // });

    // 批量增加
    // userModel.create([{username:'wuqi', password:'666'}, {username:'qiba', password:'999',age:29},{username:'gaojiu', password:'777'}]).then(data=>{
    //     console.log('create Many data: ', data);
    // })

    // 删除一条
    // userModel.deleteOne({username:'zyx'}).then(data=>{
    //     console.log('delete one: ', data);
    // })

    // 删除多条
    // userModel.deleteMany({username:'atguigu'}).then(data=>{
    //     console.log('delete Many: ' , data);
    // })

    // 更新一条
    // userModel.updateOne({_id:"643ce33b4e3e8c01025c3c28"}, {age:38}).then(data=>{
    //     console.log('update One: ', data);
    // })
    // 更新多条
    // userModel.updateMany({username:'zhangsan'}, {username:'lisi'}).then(data=>{
    //     console.log('updateMany: ', data);
    // })

    // 查询一条   查到返回的是该条记录的对象
    //            没查到==> null
    // userModel.findOne({_id:'643ce3633c53c8dc6ffaa97f'}).then(data=>{
    //     console.log('findOne: ', data);
    // })

    // 查多条, 找到返回数组
    //         没找到返回   []
    // userModel.find({username:'lisi123'}).then(data=>{
    //     console.log('find Many: ', data);
    // })

    // 根据id查找
    // userModel.findOne({_id:''})
    // userModel.findById('643ce3633c53c8dc6ffaa97f').then(data=>{
    //     console.log('findById: ', data);

    // 字段筛选  select   0 不要  1 要
    // userModel.find({_id:'643ce3633c53c8dc6ffaa97e'}).select({password:0}).then(data=>{
    //     console.log('data: ', data);
    // })

    // 排序   asc| 1  升序   desc | -1 降序
    // userModel.find({}).sort({age:'asc'}).then(data=>{
    //     console.log(data);
    // })

    // userModel.find({}).sort({age:-1}).then(data=>{
    //     console.log(data);
    // })

    // 截取数据  取整体数据中的前3条
    // userModel.find({}).limit(3).then(data=>{
    //     console.log('data',data);
    // })

    // skip 跳过几条
    // userModel.find({}).skip(6).then(data=>{
    //     console.log('skip data: ', data, data.length);
    // })

    // 分页原理：根据 每页显示几条 和 当前页，计算出 skipNum【要跳过多少条】
    
    userModel.find({}).skip(2).limit(2).then(data=>{
        console.log('page data: ', data);
    })

})

mongoose.connection.on('error' , ()=>{
    console.log('数据库链接失败');
})